

#pragma once

#include "zAcTcUiToolPalette.h"

class CUcTcUiImpToolPaletteGroup;
class CUcTcUiImpToolPaletteSet;

class UCTCUI_PORT CUcTcUiToolPaletteGroup : public CObject
{
    DECLARE_DYNAMIC(CUcTcUiToolPaletteGroup);

public:
    CUcTcUiToolPaletteGroup();
    virtual ~CUcTcUiToolPaletteGroup();

    BOOL			Reset					(void);
    CString         GetName                 (void) const;
    BOOL			SetName					(LPCTSTR pszName);
    CString			GetDescription			(void) const;
    BOOL			SetDescription			(LPCTSTR pszDesc);
    BOOL			IsItemPalette			(int iIndex) const;
    int				AddItem					(CUcTcUiToolPalette* pPalette);
    int				AddItem					(CUcTcUiToolPaletteGroup* pGroup);
    int				InsertItem				(int iIndex, 
											 CUcTcUiToolPalette* pPalette);
    int				InsertItem				(int iIndex, 
											 CUcTcUiToolPaletteGroup* pGroup);
    int				GetItemCount			(void) const;
    BOOL			GetItem					(int iIndex, 
											 CUcTcUiToolPalette*& pPalette) const;
    BOOL			GetItem					(int iIndex, 
											 CUcTcUiToolPaletteGroup*& pGroup) const;
    BOOL			DeleteItem				(CUcTcUiToolPalette* pPalette, 
											 BOOL bRecursive = FALSE);
    BOOL			DeleteItem				(CUcTcUiToolPaletteGroup* pGroup);
    BOOL			RemoveItem				(CUcTcUiToolPalette* pPalette, 
											 BOOL bRecursive = FALSE);
    BOOL			RemoveItem				(CUcTcUiToolPaletteGroup* pGroup);
    BOOL			DeleteAllPalettes		(void);
    BOOL			DeleteAllItems			(void);
    int				GetActivePalette	    (void) const;
    BOOL			SetActivePalette        (int nIndex);
    BOOL            GetCustomData           (IUnknown** ppUnknown);
    virtual BOOL 	Load					(IUnknown* pUnk);
    virtual BOOL 	Save					(IUnknown* pUnk);
    virtual BOOL 	Clone					(CUcTcUiToolPaletteGroup*& pClone);
    CUcTcUiToolPaletteGroup* FindGroup      (LPCTSTR pszGroup,
                                             BOOL bRecursive = TRUE);
    CUcTcUiToolPalette* FindPalette         (LPCTSTR pszPalName,
                                             CUcTcUiToolPaletteGroup** ppGroup,
                                             BOOL bRecursive = TRUE) const;

protected:
    void            *   mpImpObj;

private:
    friend class UcTcUiSystemInternals;
};

